package cn.regexp.demo.util;

import java.util.Collections;
import java.util.List;

/**
 * @author Regexpei
 * @date 2024/6/23 16:52
 * @description 分页工具
 */
public class PaginationHelper {
  
    /**  
     * 对列表进行分页  
     *  
     * @param list     原始列表  
     * @param pageNo   页码（从1开始）  
     * @param pageSize 每页大小  
     * @param <T>      列表元素类型  
     * @return 分页后的列表（可能为空）  
     */  
    public static <T> List<T> paginate(List<T> list, int pageNo, int pageSize) {
        if (list == null || list.isEmpty() || pageNo < 1 || pageSize <= 0) {  
            return Collections.emptyList();
        }  
  
        int fromIndex = (pageNo - 1) * pageSize;  
        if (fromIndex >= list.size()) {  
            // 请求的页码超过了实际页数，返回空列表  
            return Collections.emptyList();  
        }  
  
        int toIndex = Math.min(fromIndex + pageSize, list.size());  
        return list.subList(fromIndex, toIndex);  
    }  
}